import request from "@/utils/request";

const DICT_BASE_URL = "/dict";

const DictAPI = {
  getDictTree(data: any) {
    return request<any, PageResult<DictPageVO[]>>({
      url: `${DICT_BASE_URL}/type/tree`,
      method: "post",
      data,
    });
  },

  addDictType(data: CreationDictType) {
    return request<any, string>({
      url: `${DICT_BASE_URL}/type/add`,
      method: "post",
      data,
    });
  },

  delDistType(data: { typeIds: number[] }) {
    return request<any, string>({
      url: `${DICT_BASE_URL}/type/delete`,
      method: "post",
      data,
    });
  },

  getDataList(data: any) {
    return request({
      url: `${DICT_BASE_URL}/data/list`,
      method: "post",
      data,
    });
  },

  addData(data: any) {
    return request({
      url: `${DICT_BASE_URL}/data/add`,
      method: "post",
      data,
    });
  },

  deleteData(data: any) {
    return request({
      url: `${DICT_BASE_URL}/data/delete`,
      method: "post",
      data,
    });
  },

  testDict(id: number | string) {
    return request({
      url: `${DICT_BASE_URL}/value/${id}`,
      method: "get",
    });
  },
};

export default DictAPI;

type CreationDictType = {
  name: string;
  code: string;
  status?: number;
  pid?: number;
};

/**
 * 字典查询参数
 */
export interface DictPageQuery extends PageQuery {
  /**
   * 关键字(字典名称/编码)
   */
  keywords?: string;

  /**
   * 字典状态（1:启用，0:禁用）
   */
  status?: number;
}

/**
 * 字典分页对象
 */
export interface DictPageVO {
  /**
   * 字典ID
   */
  id: string;
  /**
   * 字典名称
   */
  name: string;
  /**
   * 字典编码
   */
  dictCode: string;
  /**
   * 字典状态（1:启用，0:禁用）
   */
  status: number;
}

/**
 * 字典
 */
export interface DictForm {
  /**
   * 字典ID
   */
  id?: string;
  /**
   * 字典名称
   */
  name?: string;
  /**
   * 字典编码
   */
  dictCode?: string;
  /**
   * 字典状态（1-启用，0-禁用）
   */
  status?: number;
  /**
   * 备注
   */
  remark?: string;
}

/**
 * 字典查询参数
 */
export interface DictItemPageQuery extends PageQuery {
  /** 关键字(字典数据值/标签) */
  keywords?: string;

  /** 字典编码 */
  dictCode?: string;
}

/**
 * 字典分页对象
 */
export interface DictItemPageVO {
  /**
   * 字典ID
   */
  id: string;
  /**
   * 字典编码
   */
  dictCode: string;
  /**
   * 字典数据值
   */
  value: string;
  /**
   * 字典数据标签
   */
  label: string;
  /**
   * 状态（1:启用，0:禁用)
   */
  status: number;
  /**
   * 字典排序
   */
  sort?: number;
}

/**
 * 字典
 */
export interface DictItemForm {
  /**
   * 字典ID
   */
  id?: string;
  /**
   * 字典编码
   */
  dictCode?: string;
  /**
   * 字典数据值
   */
  value?: string;
  /**
   * 字典数据标签
   */
  label?: string;
  /**
   * 状态（1:启用，0:禁用)
   */
  status?: number;
  /**
   * 字典排序
   */
  sort?: number;

  /**
   * 标签类型
   */
  tagType?: "success" | "warning" | "info" | "primary" | "danger" | undefined;
}

/**
 * 字典项下拉选项
 */
export interface DictItemOption {
  /** 字典数据值 */
  value: string;

  /** 字典数据标签 */
  label: string;

  /** 标签类型 */
  tagType: string;
}
